﻿using System;
using Company.BLL;
using Company.BLL.KDT.GC;
using Company.BLL.Utils;
using Company.BLL.DuLieuChuan;
using System.Data;
using Janus.Windows.GridEX;
using System.Windows.Forms;

namespace Company.Interface.KDT.GC
{
    public partial class LoaiSanPhamGCEditForm : BaseForm
    {
        public NhomSanPhamCollection nhomSPCollection;
        public Company.BLL.KDT.GC.NhomSanPham nhom = new Company.BLL.KDT.GC.NhomSanPham();
        public HopDong hongdong = new HopDong();
        public bool isAdd = true;
        public bool isUpdate = false;
        private int STTHang = 0;    
        public LoaiSanPhamGCEditForm()
        {
            InitializeComponent();
            nhomSPCollection = new NhomSanPhamCollection();
        }

        private void btnClose_Click(object sender, EventArgs e)
        {
            //this.Close();
        }

        private void LoadLoaiSanPham()
        {
            cbTen.DataSource = Company.BLL.DuLieuChuan.NhomSanPham.SelectAll().Tables[0];
            cbTen.DisplayMember = "TenSanPham";
            cbTen.ValueMember = "MaSanPham";
        }
        private void LoaiSanPhamGCEditForm_Load(object sender, EventArgs e)
        {
            LoadLoaiSanPham();
            dgNhomSanPham.DataSource = nhomSPCollection;            
            if (!isAdd)
            {
                cbTen.SelectedValue = nhom.MaSanPham;
                txtSoLuong.Text = nhom.SoLuong.ToString();
                txtGia.Text = nhom.GiaGiaCong.ToString();               
                btnAdd.Text = "Sửa";
            }
            if (hongdong.TrangThaiXuLy == TrangThaiXuLy.DA_DUYET)
            {
                btnAdd.Enabled = false;
                uiButton1.Enabled = false;
            }
            foreach (Company.BLL.KDT.GC.NhomSanPham s in nhomSPCollection)
            {
                if (s.STTHang > STTHang)
                    STTHang = s.STTHang;
            }
        }
        private void reset()
        {
            txtGia.Text = "0.000";
            txtSoLuong.Text = "0.000";
            //STTHang++;
            btnAdd.Text = "Thêm";          
            cbTen.Text = "";
            dgNhomSanPham.Refetch();
            cbTen.Focus();
            isAdd = true;
            nhom = new Company.BLL.KDT.GC.NhomSanPham();
        }
        private void btnAdd_Click(object sender, EventArgs e)
        {            
            cvError.Validate();           
            if (!cvError.IsValid) return;
            {

                //if (!MaHS.Validate(txtMaHS.Text.Trim(), 10))
                //{
                //    error.SetIconPadding(txtMaHS, -8);
                //    error.SetError(txtMaHS, "Mã số HS không hợp lệ.");
                //    return;
                //}
                if (Convert.ToDecimal(txtSoLuong.Text) == 0)
                {
                    error.SetError(txtSoLuong, "Số lượng phải lớn hơn 0.");
                    txtSoLuong.Focus();
                    return;
                }
                if (Convert.ToDecimal(txtGia.Text) == 0)
                {
                    error.SetError(txtGia, "Giá gia công phải lớn hơn 0.");
                    txtGia.Focus();
                    return;
                }
                            
                checkExitsNhomSanPhamAndSTTHang();                
            }
           
            
        }
        private void checkExitsNhomSanPhamAndSTTHang()
        {
            if (!isAdd)
                nhomSPCollection.Remove(nhom);
            else//lay thong tin tao moi
            {
                nhom.STTHang = STTHang + 1;
                nhom.SoLuong = Convert.ToDecimal(txtSoLuong.Text);
                nhom.GiaGiaCong = Convert.ToDecimal(txtGia.Text);
                nhom.TenSanPham = cbTen.Text.Trim();
                nhom.MaSanPham = cbTen.SelectedValue.ToString().Trim();
                nhom.HopDong_ID = hongdong.ID;
            }
           
                 
            foreach (Company.BLL.KDT.GC.NhomSanPham nhomSP in nhomSPCollection)
            {
                if (nhomSP.checkExits(cbTen.SelectedValue.ToString()))
                {
                    if (isAdd)//cap nhat
                    {
                        string st = ShowMessage("Đã có sản phẩm này trong danh sách. Bạn có muốn cập nhật lại không?", true);
                        if (st == "Yes")
                        {                           
                            nhomSP.SoLuong = Convert.ToDecimal(txtSoLuong.Text);
                            nhomSP.GiaGiaCong = Convert.ToDecimal(txtGia.Text);
                            nhomSP.TenSanPham = cbTen.Text.Trim();
                            nhomSP.MaSanPham = cbTen.SelectedValue.ToString().Trim();
                            reset();                          
                            return ;
                        }
                        else
                        {
                            nhom = new Company.BLL.KDT.GC.NhomSanPham();
                            cbTen.Focus();
                            return ;
                        }
                    }
                    else
                    {
                        ShowMessage("Đã có sản phẩm này trong danh sách.", false);
                        nhomSPCollection.Add(nhom);
                        cbTen.Focus();
                        return;
                    }
                }                                  
            }
            if (isAdd)
            {
                nhomSPCollection.Add(nhom);
                STTHang++;
                reset();
            }
            else//cap nhat
            {
                nhom.SoLuong = Convert.ToDecimal(txtSoLuong.Text);
                nhom.GiaGiaCong = Convert.ToDecimal(txtGia.Text);
                nhom.TenSanPham = cbTen.Text.Trim();
                nhom.MaSanPham = cbTen.SelectedValue.ToString().Trim();
                nhom.HopDong_ID = hongdong.ID;
                nhomSPCollection.Add(nhom);                
                reset();
                    
                return ;
            }            
        }
        private void dgNhomSanPham_RowDoubleClick(object sender, Janus.Windows.GridEX.RowActionEventArgs e)
        {
            cbTen.SelectedValue = e.Row.Cells[2].Text.Trim();
            txtSoLuong.Text = e.Row.Cells[4].Text.Trim();
            txtGia.Text = e.Row.Cells[5].Text.Trim();
            nhom.MaSanPham = e.Row.Cells[2].Text.Trim();
            nhom.SoLuong=Convert.ToDecimal(e.Row.Cells[4].Text);
            nhom.GiaGiaCong = Convert.ToDecimal(e.Row.Cells[5].Text);
            nhom.STTHang =Convert.ToInt32(e.Row.Cells[1].Text);
            nhom.ID = (long)Convert.ToInt64(e.Row.Cells[6].Text);
            nhom.TenSanPham = e.Row.Cells[3].Text.Trim();
            nhom.HopDong_ID = hongdong.ID;
            isAdd = false;
            btnAdd.Text = "Sửa";
            
        }

        private void uiButton1_Click(object sender, EventArgs e)
        {
            if (hongdong.ID <= 0)
            {
                ShowMessage("Phải lưu trữ hợp đồng trước", false);
            }
            else
            {
                if (hongdong.TrangThaiXuLy == TrangThaiXuLy.DA_DUYET)
                {
                    ShowMessage("Hợp đồng đã duyệt chính thức. Không được chỉnh sửa",false);
                    return;
                }
                 try
                {
                this.Cursor = Cursors.WaitCursor;
          
                int i = 1;
                foreach (Company.BLL.KDT.GC.NhomSanPham s in nhomSPCollection)
                {
                    s.STTHang = i++;
                }
                if (nhom.InsertUpdate(nhomSPCollection))
                {
                    isUpdate = true;
                    ShowMessage("Đã cập nhật thành công",false);
                    //nhomSPCollection = Company.BLL.KDT.GC.NhomSanPham.SelectCollectionBy_HopDong_ID(hongdong.ID);
                    //reset();
                    this.Close();
                }
                else
                    ShowMessage("Có lỗi khi cập nhật ",false);
            }
            catch (Exception ex)
            {
                ShowMessage("Có lỗi :" + ex.Message, false);
            }
            finally
            {
                this.Cursor = Cursors.Default;
            }
            }
        }

        private void LoaiSanPhamGCEditForm_FormClosing(object sender, System.Windows.Forms.FormClosingEventArgs e)
        {
            if (hongdong.ID > 0 && !isUpdate)
            {
                if (ShowMessage("Bạn có muốn lưu lại những thay đổi trong nhóm sản phẩm không", true) == "Yes")
                {
                    uiButton1_Click(null, null);
                }
            }
        }

        private void dgNhomSanPham_DeletingRecord(object sender, Janus.Windows.GridEX.RowActionCancelEventArgs e)
        {
            if (hongdong.TrangThaiXuLy == TrangThaiXuLy.DA_DUYET)
            {
                ShowMessage("Hợp đồng đã duyệt chính thức. Không được chỉnh sửa", false);
                e.Cancel = true;
                return;
            }
            if (e.Row.RowType == RowType.Record)
            {
                if (ShowMessage("Bạn có muốn xóa nhóm sản phẩm này không?", true) == "Yes")
                {
                    Company.BLL.KDT.GC.NhomSanPham nhom = new Company.BLL.KDT.GC.NhomSanPham();
                    nhom.ID = (long)Convert.ToInt64(e.Row.Cells[7].Text);
                    if (nhom.ID > 0)
                    {
                        nhom.Delete();
                        //foreach (Company.BLL.KDT.GC.NhomSanPham n in nhomSPCollection)
                        //{

                        //}
                        isUpdate = true;
                    }
                }
                else
                {
                    e.Cancel = true;
                }
            }
        }

       

       

    }
}